home *** CD-ROM | disk | FTP | other *** search
- {$C-,V-,K-,R-,U-}
- (****************************************************************************)
- (* *)
- (* This program is the GT-UTIL program. It will do several *)
- (* utility functions with the Phone Directory as follows: *)
- (* *)
- (* 1. Convert pre GT 4.20 directories to new format. *)
- (* 2. List directory to the system printer. *)
- (* 3. Import text listing of BBS into GT directory format. *)
- (* *)
- (****************************************************************************)
-
- program
- gt_util;
-
- procedure
- reformat;
- {
- This procedure is intended to be used to upgrade old versions of the GT
- phone directory to the new improved style. The program renames the old
- directory to OLD_GT.DIR and the new directory becomes GT.DIR, ready to
- use with GT v4.20 or later.
- }
- type
- odialrec = record
- name : string[30];
- number : string[30];
- baud : integer;
- parity : integer;
- databits : integer;
- stopbits : integer;
- end;
- ndialrec = record
- redial : char;
- name : string[30];
- number : string[14];
- date : string[8];
- time : string[5];
- baud : integer;
- parity : integer;
- databits : integer;
- stopbits : integer;
- end;
- odialarray = record
- no : integer;
- entries : array[ 1..16 ] of odialrec;
- end;
- ndialarray = record
- no : integer;
- entries : array[ 1..16 ] of ndialrec;
- end;
-
- var
- ofile : file of odialarray;
- nfile : file of ndialarray;
- odir : odialarray;
- ndir : ndialarray;
- i,j,k : integer;
- s : string[255];
-
- begin
- writeln;
- writeln('***********************************************************************');
- writeln('* Make sure the old phone directory is in the default directory *');
- writeln('* and default drive, then press <enter> when ready to begin or *');
- writeln('* type "exit" followed by <enter> to quit. *');
- writeln('***********************************************************************');
- writeln;
- s[0] := #00;
- readln(s);
- IF ((s = 'exit') OR (s = 'EXIT')) then
- exit;
- assign(ofile,'GT.DIR');
- rename(ofile,'OLD_GT.DIR');
- reset(ofile);
- assign(nfile,'GT.DIR');
- rewrite(nfile);
- i := filesize(ofile);
- for j:=0 to pred(i) do begin
- seek(ofile,j);
- read(ofile,odir);
- ndir.no := odir.no;
- for k:=1 to 16 do begin
- ndir.entries[k].redial := ' ';
- ndir.entries[k].date := '';
- ndir.entries[k].time := '';
- ndir.entries[k].name := odir.entries[k].name;
- ndir.entries[k].number := odir.entries[k].number;
- ndir.entries[k].baud := odir.entries[k].baud;
- ndir.entries[k].parity := odir.entries[k].parity;
- ndir.entries[k].databits := odir.entries[k].databits;
- ndir.entries[k].stopbits := odir.entries[k].stopbits;
- end;
- write(nfile,ndir);
- end;
- close(nfile);
- close(ofile);
- end;
-
- procedure
- printout;
- type
- dialrec = record
- redial : char;
- name : string[30];
- number : string[14];
- date : string[8];
- time : string[5];
- baud : integer;
- parity : integer;
- databits : integer;
- stopbits : integer;
- end;
- dialarray = record
- no : integer;
- entries : array[ 1..16 ] of dialrec;
- end;
- const
- pt : array[0..2] of char = ('N','E','O');
- blanks = ' ';
-
- var
- dfile : file of dialarray;
- ddir : dialarray;
- i,j,k : integer;
- s : string[80];
- pname : string[50];
- dname : string[50];
- prt_file : text;
-
- begin
- writeln;
- writeln('***********************************************************************');
- writeln('* Make sure the phone directory is in the default directory and *');
- writeln('* default drive, then press <enter> when ready to begin or type *');
- writeln('* "exit" followed by <enter> to quit. If you wish the output *');
- writeln('* to go to a file, instead of the printer, enter the filename. *');
- writeln('***********************************************************************');
- writeln;
- s[0] := #00;
- readln(s);
- IF ((s = 'exit') OR (s = 'EXIT')) then
- exit;
- IF (s[0] = #00) THEN
- pname := 'LST:'
- ELSE
- pname := s;
- writeln;
- writeln('*****************************************************************');
- writeln('* Type the name of the directory to be printed, or "exit" *');
- writeln('* to quit, followed by <enter>. *');
- writeln('*****************************************************************');
- writeln;
- s[0] := #00;
- readln(s);
- IF ((s = 'exit') OR (s = 'EXIT')) then
- exit;
- i := pos('.',s);
- IF (i > 0) THEN
- s[0] := CHR(Pred(i));
- IF (s[0] = #00) THEN
- dname := 'GT.DIR'
- ELSE
- dname := s+'.DIR';
- assign(dfile,dname);
- reset(dfile);
- assign(prt_file,pname);
- rewrite(prt_file);
- i := filesize(dfile);
- for j:=0 to pred(i) do begin
- seek(dfile,j);
- read(dfile,ddir);
- for k:=1 to ddir.no do begin
- with ddir.entries[k] do begin
- s := copy(name+blanks,1,31);
- write(prt_file,s);
- s := copy(number+blanks,1,15);
- write(prt_file,s);
- writeln(prt_file,date,
- ' ',time,
- ' ',baud:4,
- ' ',pt[parity],
- ' ',databits,
- ' ',stopbits);
- end;
- end;
- end;
- close(dfile);
- close(prt_file);
- end;
-
- procedure
- import;
- type
- dialrec = record
- redial : char;
- name : string[30];
- number : string[14];
- date : string[8];
- time : string[5];
- baud : integer;
- parity : integer;
- databits : integer;
- stopbits : integer;
- end;
- dialarray = record
- no : integer;
- entries : array[ 1..16 ] of dialrec;
- end;
- const
- maxaccum = 5;
- var
- dfile : file of dialarray;
- ddir : dialarray;
- i,j,k : integer;
- s : string[255];
- t : char;
- accum : array[0..5] of string[255];
- pname : string[50];
- inp_file : text;
- cont : boolean;
- begin
- writeln;
- writeln('***********************************************************************');
- writeln('* Enter "exit" followed by <enter> to quit. To continue enter *');
- writeln('* the name of the ASCII input file at this time. *');
- writeln('***********************************************************************');
- writeln;
- s[0] := #00;
- readln(s);
- IF ((s = 'exit') OR (s = 'EXIT') OR (s = '')) then
- exit;
- assign(inp_file,s);
- reset(inp_file);
- writeln;
- writeln('*************************************************************************');
- writeln('* Enter "exit" followed by <enter> to quit. To continue enter *');
- writeln('* the name of the output file at this time, (GT format directory). *');
- writeln('* WARNING: The existing contents of the output file will be lost! *');
- writeln('*************************************************************************');
- writeln;
- s[0] := #00;
- readln(s);
- IF ((s = 'exit') OR (s = 'EXIT') OR (s = '')) then begin
- close(inp_file);
- exit;
- end;
- assign(dfile,s);
- rewrite(dfile);
- ddir.no := 0;
- WHILE (NOT eof(inp_file)) do begin
- readln(inp_file,s);
- ddir.no := Succ(ddir.no);
- IF (ddir.no > 16) THEN BEGIN
- ddir.no := 16;
- write(dfile,ddir);
- ddir.no := 1;
- END;
- While ((s[1] in [' ','.']) AND (s[0] > #00)) do
- delete(s,1,1);
- with ddir.entries[ddir.no] do begin
- redial := ' ';
- name := '';
- number := '';
- date := '';
- time := '';
- baud := 1200;
- parity := 0;
- databits := 8;
- stopbits := 1;
- for k:=0 to maxaccum do
- accum[k] := '';
- k := 0;
- WHILE ((k <= maxaccum) AND (s[0] > #00)) do begin
- cont := true;
- While (cont) do begin
- accum[k] := accum[k] + s[1];
- t := s[1];
- delete(s,1,1);
- IF (s[0] = #00) then
- cont := false
- else
- If (s[0] < #03) then
- cont := true
- else
- if ((s[1]=' ') and (accum[k][1] in ['1'..'9','('])) then
- cont := false
- else
- if ((s[1] in ['_',' ','.']) and (s[2] = s[1])) then
- cont := false
- else
- if ((s[1] in ['!','#','*','@']) and (t in ['0'..'9','('])) then
- cont := false;
- end;
- k := succ(k);
- while ((s[0] > #00) and (NOT (s[1] in ['a'..'z','A'..'Z','0'..'9','(']))) do
- delete(s,1,1);
- end;
- k := 0;
- cont := true;
- while ((cont) and (k <= maxaccum)) do begin
- if accum[k][0] > #00 then begin
- if (accum[k][1] in ['0'..'9','(']) then begin
- number := copy(accum[k],1,14);
- cont := false;
- if (k = 0) then
- k := 1
- else
- k := 0;
- FOR i:=2 TO maxaccum DO begin
- IF (accum[i][0] > #00) THEN
- accum[k] := accum[k] + '-' + accum[i];
- end;
- name := copy(accum[k],1,30);
- end;
- end;
- k := succ(k);
- end;
- end;
- end;
- IF (ddir.no > 0) THEN
- write(dfile,ddir);
- close(dfile);
- close(inp_file);
- end;
-
- var
- i : integer;
-
- begin
- writeln;
- writeln('*************************** MENU *******************************');
- writeln('* 1. Convert Pre 4.20 Phone Directory to New Format. *');
- writeln('* 2. Print Phone Directory to a file or System Printer. *');
- writeln('* 3. Import Text List to Phone Directory Format. *');
- writeln('****************************************************************');
- writeln;
- write(' Enter the number of your selection: ');
- readln(i);
- case i of
- 1 : reformat;
- 2 : printout;
- 3 : import;
- end;
- end.